/* 从顺序表中删除给定值在s到t之间（包含s和t）的所有元素 */

#include <iostream>
#include "sqlist.cpp"
using namespace std;

// 删除操作
bool del(Sqlist &L, int s, int t)
{
  // k记录元素左移的幅度
  int i, k = 0;
  
  // 如果顺序表为空，或者删除元素范围不符合规范
  if (L.length == 0 || s >= t)
    return false; // 删除失败
  
  // 遍历顺序表
  for (i = 0; i < L.length; ++i)
  {
    // 如果值满足要求，之后的元素左移幅度加1
    if (L.data[i] >= s && L.data[i] <= t)
      ++k;
    
    // 元素左移
    else
      L.data[i - k] = L.data[i]; 
  }
  
  // 更新长度
  L.length -= k;
  
  // 删除成功
  return true;
}

int main()
{
  // 创建顺序表
  Sqlist L = {{12, 13, 15, 18, 9}, 5};
  
  // 删除元素
  del(L, 13, 19);
  
  // 打印
  for (int j = 0; j < L.length; ++j)
    cout << L.data[j] << " ";
}